﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas_Documentos_edFiscalCNDISSISSQN : PageBase 
{
    protected const string tipoDocumento = "CND_ISS_ISSQN";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CarregaComboAno(cboAno);
            OcultaCampos(true);
            hdId.Value = tipoDocumento;

            if (Session["WorkFlow"] != null)
                Session["WorkFlow"] = null;
        }
    }

    #region Eventos
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        try
        {
            Pesquisa();
            rgISSISSQN.DataBind();
            OcultaCampos(false);
        }
        catch (Exception ex)
        {
            lblResultado.Text = ex.Message;
        }
    }

    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        foreach (RadComboBoxItem item in cboAno.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            chk.Checked = true;
        }
        cboAno.SelectedIndex = 0;

        OcultaCampos(true);
    }

    protected void rgISSISSQN_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            HyperLink editLink = (HyperLink)e.Item.FindControl("EditLink");
            editLink.Attributes["href"] = "#";
            editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdDocumentoOrganizacao"], e.Item.ItemIndex);
        }
    }

    protected void rgISSISSQN_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        Pesquisa();
    }

    protected void rgISSISSQN_DeleteCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        try
        {
            lblResultado.Text = "";

            OrganizacaoDocumento _organDocumento = new OrganizacaoDocumento();

            GridEditableItem editedItem = e.Item as GridEditableItem;

            int _idDocumentoOrgan = int.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["IdDocumentoOrganizacao"].ToString());
            _organDocumento.IdDocumentoOrganizacao = _idDocumentoOrgan;
            _organDocumento.Excluir();
        }
        catch (Exception ex)
        {
            lblResultado.Text = ex.Message;
        }
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        Pesquisa();
        rgISSISSQN.DataBind();
    }
    #endregion

    #region Metodos
    private void CarregaComboAno(RadComboBox combo)
    {
        DataTable _dtAno = new DataTable();

        DataColumn _dcAno = new DataColumn();
        _dcAno.ColumnName = "Ano";
        _dcAno.DataType = Type.GetType("System.String");
        _dtAno.Columns.Add(_dcAno);

        DataColumn _dcAnoId = new DataColumn();
        _dcAnoId.ColumnName = "AnoId";
        _dcAnoId.DataType = Type.GetType("System.Int32");
        _dtAno.Columns.Add(_dcAnoId);

        DataRow _drAno;
        _drAno = _dtAno.NewRow();

        _drAno["Ano"] = "Todos";
        _drAno["AnoId"] = 0;
        _dtAno.Rows.Add(_drAno);

        for (int i = DateTime.Now.Year; i >= DateTime.Now.Year - 15; i--)
        {
            _drAno = _dtAno.NewRow();
            _drAno["Ano"] = i.ToString();
            _drAno["AnoId"] = i;
            _dtAno.Rows.Add(_drAno);
        }

        combo.DataSource = _dtAno;
        combo.DataBind();

        // tratamento para situação de selecionar o ano conforme o link do e-mail para os respectivo documento
        if (Session["Workflow"] != null)
        {
            RadComboBoxItem itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
            if (itemAno == null)
            {
                _drAno = _dtAno.NewRow();
                _drAno["Ano"] = Request.QueryString["AnoWF"].ToString();
                _drAno["AnoId"] = int.Parse(Request.QueryString["AnoWF"].ToString());

                _dtAno.Rows.Add(_drAno);

                combo.DataSource = _dtAno;
                combo.DataBind();

                itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
            }

            foreach (RadComboBoxItem item in combo.Items)
            {
                if (item.Index != itemAno.Index)
                {
                    CheckBox chk = (CheckBox)item.FindControl("chk1");
                    chk.Checked = false;
                }
            }
            combo.SelectedIndex = itemAno.Index;
        }
        else
        {
            combo.SelectedIndex = 0;
        }
    }

    private void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
    }

    private void Pesquisa()
    {
        rgISSISSQN.DataSource = CarregaDocumentos();
    }

    private List<OrganizacaoDocumento> CarregaDocumentos()
    {
        OrganizacaoDocumento documento = new OrganizacaoDocumento();
        List<OrganizacaoDocumento> listDocumento = new List<OrganizacaoDocumento>();

        List<Int16> listAnos = new List<Int16>();

        foreach (RadComboBoxItem item in cboAno.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            if (chk.Checked)
            {
                listAnos.Add(Int16.Parse(item.Value));
            }
        }

        Int16[] _anos = new Int16[listAnos.Count];
        for (int i = 0; i < listAnos.Count; i++)
        {
            _anos[i] = listAnos[i];
        }

        listDocumento = documento.SelectPor(IdPrestador, (int)TipoDocumento.TipoDocto.CND_ISS_ISSQN, _anos);
        
        return listDocumento;
    }
    #endregion
}
